package com.dhcc.bpm.modules.scf.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 支付信息表实体类
 */
@Data
@TableName("scf_payment_info")
public class ScfPaymentInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    @TableId(value = "ROW_ID", type = IdType.INPUT)
    private String rowId;

    /**
     * 回单交易流水号-一个回单可能对应多个入库
     */
    @TableField("PAYMENT_NUM")
    @ExcelProperty("交易流水号")
    private String paymentNum;

    /**
     * 回单类型：1收款回单 2付款回单
     */
    @TableField("PAYMENT_TYPE")
    @ExcelProperty("回单类型")
    private String paymentType;

    /**
     * 交易时间
     */
    @TableField("PAY_TIME")
    @ExcelProperty("交易时间")
    private String payTime;

    /**
     * 付款人户名
     */
    @TableField("PAYER_NAME")
    @ExcelProperty("付款人户名")
    private String payerName;

    /**
     * 付款人开户行
     */
    @TableField("PAYER_BANK")
    @ExcelProperty("付款人开户行")
    private String payerBank;

    /**
     * 付款人账号
     */
    @TableField("PAYER_ACCNO")
    @ExcelProperty("付款人开户行账户")
    private String payerAccno;

    /**
     * 收款人户名
     */
    @TableField("PAYEE_NAME")
    @ExcelProperty("收款人户名")
    private String payeeName;

    /**
     * 收款人开户行
     */
    @TableField("PAYEE_BANK")
    @ExcelProperty("收款人开户行")
    private String payeeBank;

    /**
     * 收款人账号
     */
    @TableField("PAYEE_ACCNO")
    @ExcelProperty("收款人开户行账号")
    private String payeeAccno;

    /**
     * 交易币种
     */
    @TableField("CURRENCY")
    @ExcelProperty("币种")
    private String currency;

    /**
     * 交易金额
     */
    @TableField("AMOUNT")
    @ExcelProperty("交易金额（元）")
    @JsonSerialize(using = ToStringSerializer.class, nullsUsing = NullSerializer.class)
    private BigDecimal amount;

    /**
     * 大写金额
     */
    @TableField("AMOUNT_WORDS")
    private String amountWords;

    /**
     * 交易渠道
     */
    @TableField("CHANNEL")
    @ExcelProperty("交易渠道")
    private String channel;

    /**
     * 摘要
     */
    @TableField("ABSTRACT")
    @ExcelProperty("摘要")
    private String abstractInfo;

    /**
     * 回单提供银行
     */
    @TableField("BANK_NAME")
    @ExcelProperty("回单提供银行")
    private String bankName;

    /**
     * 剩余金额
     */
    @TableField("REMAIN_AMOUNT")
    @JsonSerialize(using = ToStringSerializer.class, nullsUsing = NullSerializer.class)
    private BigDecimal remainAmount;

    /**
     * 使用状态 使用状态 // 设置初始使用状态为暂未使用(0:暂未使用，1：部分使用，2：全部使用)
     */
    @TableField("USE_STS")
    private String useSts;

    /**
     * 是否提前付款
     */
    @TableField("IS_ADVANCE_PAYMENT")
    @ExcelProperty("是否预付款")
    private String isAdvancePayment;

    /**
     * 是否关联发票（暂未关联、部分关联、关联完成）
     */
    @TableField("IS_WITH_INVOICE")
    private String isWithInvoice;

    /**
     * 录入人
     */
    @TableField("RECORDER")
    private String recorder;

    /**
     * 录入日期
     */
    @TableField("RECORD_DATE")
    private String recordDate;

    /**
     * 录入时间
     */
    @TableField("RECORD_TIME")
    private String recordTime;

    @TableField("ORG_CODE")
    @ExcelProperty("所属公司编码")
    private String orgCode;


    @TableField("ZSRK_REMAIN_AMOUNT")
    @ExcelProperty("再生剩余金额")
    private String zsrkRemainAmount;


    @TableField("LFRK_REMAIN_AMOUNT")
    @ExcelProperty("利废剩余金额")
    private String lfrkRemainAmount;
}
